package com.yuncheng.spcyApi.mapper;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuncheng.spcyApi.entity.SpcySqsxXpjl;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yuncheng.spcyApi.vo.jcy.DpxxAreaVo;
import com.yuncheng.spcyApi.vo.spcy.SpcyXpryUserVo;
import com.yuncheng.spcyApi.vo.sqsx.MyXpjlVo;
import com.yuncheng.spcyApi.vo.ndkp.NdkpXpjlVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @Description: 审评查验-选派记录
 * @Author: csx
 * @Date: 2023-03-03
 * @Version: V1.0
 */
public interface SpcySqsxXpjlMapper extends BaseMapper<SpcySqsxXpjl> {
    // 年度考评选派记录
    List<NdkpXpjlVo> getNdkpXpjl(@Param("ndkp")NdkpXpjlVo ndkpXpjlVo);

    // 申请事项-核查员选派记录
    List<MyXpjlVo> getXpjlList(@Param("xpjl")MyXpjlVo xpjlVo);

    // 申请事项-核查员选派记录 - 分页
    Page<MyXpjlVo> getXpjlPageList(Page<MyXpjlVo> page,@Param("xpjl")MyXpjlVo xpjlVo);

    // 统计选派人员的地域选派次数 - 年度
    DpxxAreaVo getHcyAreaXpjlStat(@Param("xpjl") DpxxAreaVo dpxxAreaVo);

    /** 获取年度选派情况 */
    List<SpcySqsxXpjl> getYearXpjlqkList(@Param("userid")String userid,
                                         @Param("fspcylx") String fspcylx,
                                         @Param("year")String year);

    /** 根据选派记录id查询对应的申请事项id */
    String getXpjlSqsxidById(@Param("id") String id);

    /**
     * 查询选派记录列表-根据申请id and ( 同意条件 or（未确认 and 没有发送确认短信）
     * @param sqsxid 申请事项id
     * @param tyxp 同意选派
     * @param dqrxp 未确认选派
     * @param fsmszt 确认选派短信状态
     * */
    List<SpcySqsxXpjl> getTyWqrFsdqrSmsList(@Param("sqsxid") String sqsxid,
                                           @Param("tyxp") String tyxp,
                                           @Param("dqrxp") String dqrxp,
                                           @Param("fsmszt") String fsmszt);

    /**
     * 查询选派记录列表-根据申请id和是否同意选派状态
     * @param sqsxid 申请事项id
     * @param tyxp 同意选派条件
     * */
    List<SpcySqsxXpjl> getXpListSizeByFsftyxp(@Param("sqsxid") String sqsxid, @Param("tyxp") String tyxp);

    /**
     * 查询选派记录列表数量-根据申请id
     * @param sqsxid 申请事项id
     * @param tyxp 同意选派状态
     * @param fsmszt 确认选派短信状态
     * */
    List<String> getXpjlListSize(@Param("sqsxid") String sqsxid, @Param("tyxp") String tyxp, @Param("fsmszt") String fsmszt);

    /**
     * 查询选派记录是否存在同意选派人员变动
     */
    List<String> findTyxpryBgList(@Param("sqsxid") String sqsxid,
                                  @Param("tyxp") String tyxp,
                                  @Param("btyxp") String btyxp);

    /**
     * 将所有不同意的人员并已经发送过检查短信的时间置空
     * */
    void updateXpjlInJctzSmsEmpty(@Param("sqsxid") String sqsxid, @Param("btyxp") String btyxp);

    /**
     * 查询选派记录的检查身份-通过申请事项id和用户id
     */
    List<String> getXpjlSskBySqsxIdAndUserId(@Param("sqsxid") String sqsxid, @Param("userid") String userid);

    /**
     * 查询选派记录中-是否存在药检所人员列表
     * @param sqsxid 申请事项id
     * @param tyxp 同意选派
     * @param wqrxp 未确认选派
     * @param yjsry 是否药检所人员
     */
    List<String> selectExistsYjsryListBySqsxId(@Param("sqsxid") String sqsxid,
                                               @Param("tyxp") String tyxp,
                                               @Param("wqrxp") String wqrxp,
                                               @Param("yjsry") String yjsry);

    /**
     * 验证当前申请事项-是否已选派该人员
     */
    List<String> selectIdByFsqsxidAndFuserid(@Param("sqsxid") String sqsxid, @Param("userid") String userid);

    /**
     * 验证当前申请事项-是否已选派该人员
     */
    List<String> selectFsftyxpIdByFsqsxidAndFuserid(@Param("sqsxid") String sqsxid,
                                                    @Param("userid") String userid,
                                                    @Param("fsftyxp") String fsftyxp);

    /** 查询选派人员姓名列表 */
    List<SpcyXpryUserVo> selectXpUserBeanListByFsqsxId(@Param("sqsxid") String sqsxid, @Param("fsftyxp") String fsftyxp);

    /** 查询选派人员身份数量 */
    Integer selectTySskSize(@Param("sqsxid") String sqsxid,
                            @Param("fsftyxp") String fsftyxp,
                            @Param("fssk") String fssk);

    /** 评价统计：年度评价率 */
    List<Map> selectPjvYear(@Param("year") String year, @Param("fuserid") String fuserid);
}
